The present invention concerns the transmission of data between a server and a client across a communication network and more particularly methods and devices for estimating a level of use of a communication network and for adapting a level of subscription to multicast sessions according to the level of use of the network.
The invention is situated in the context of the transmission of a data stream such as a video sequence between a server and at least one client over a communication network that is unreliable, that is to say in which the transmission conditions are not stable and in which data losses may occur. Such a communication network is for example the Internet network in which the data are transmitted by packets.
H.264/AVC (acronym for Advanced Video Coding) is a video compression standard providing good video quality for a relatively low throughput. It involves compression by blocks implementing algorithms for motion estimation and compensation. It was developed in order to be easy to use in a large number of applications and conditions.
An extension of the H.264/AVC standard is the SVC standard (SVC being an acronym for Scalable Video Coding) the object of which is to code a high quality video stream into a set of bitstreams comprising a basic stream and several enhancement streams which, when they are decoded with the basic stream, enhance the quality of that stream.
Such coding of video sequences is said to be hierarchical or “scalable”, that is to say that it implements one or more hierarchical levels, also called scalability levels or layers.
Three types of scalability have been defined in the SVC standard: spatial, temporal and quality scalability, quality scalability also being known by the name SNR scalability (SNR being an acronym for Signal to Noise Ratio).
Temporal scalability enables the temporal resolution of a sequence to be modified (that is to say the number of frames per second represented by the coded data) by deleting certain images, this deletion taking into account the dependencies that may exist between the images.
Spatial scalability consists of inserting several spatial resolutions (corresponding to different numbers of pixels represented by the coded data) in a video stream, the lowest resolution being used for the prediction of the higher resolutions.
Quality scalability concerns three different forms: Coarse Grain Scalability or CGS, Medium Grain Scalability or MGS and Fine Grain Scalability or FGS. CGS uses the same concepts as spatial scalability, the only difference being that for CGS, the operations of upsampling of the inter-layer prediction are omitted. FGS enables a bitstream to be created which may be truncated at any point while remaining decodable. MGS has been defined as intermediate between CGS and FGS: it provides decoding points in the bitstream that are finer than CGS but does not enable truncation at any point like FGS. MGS is often considered as providing sufficient granularity for realistic network conditions.
The transmission of a video over a network is facilitated by the introduction of the concept of NAL unit (NAL being an acronym for Network Abstraction Layer). A NAL is an elementary unit for transfer of the bitstream which, in its header, provides description information on the data transported in the data part of the NAL.
All the NALs corresponding to the same point in time form an entity termed AU (“Access Unit”).
Messages of SEI type (SEI being an acronym for Supplemental Enhancement Information) may be used to facilitate certain operations such as decoding and display. These messages are also transmitted in NAL form. Among these messages, there is in particular one called “scalability information SEI” of which the fields indicate scalability characteristics of the data stream in which the message is transmitted. In particular, such a message, called a scalability SEI message in the following description, may comprise information relative to the average rate linked to a scalability layer i, referenced Avg_bitrate[i], as well as information relative to the maximum rate linked to a scalability layer i of the SVC sequence concerned by the SEI message, referenced Max_bitrate_layer[i]. The presence of these items of information is flagged by an indicator denoted bitrate_info_present_flag[i].
The scalability layers are generally transmitted across a communication network, for example in packet form, in multicast sessions, enabling clients to subscribe to subscriptions to a set of multicast sessions, that is to say to join those sessions, according to their capabilities, in particular their reception, decoding, processing and display capabilities.
A problem linked to communication networks is the variation in their capacity. The bandwidth and the transmission error rate often vary depending on the behavior of clients but also independently of their behavior, in particular due to the traffic generated by other applications. If the applications using the network do not react appropriately according to its capacities, there is a risk of congestion which may cause the loss of packets, or, on the contrary, a possibility of under-use of the network.
It should be noted here that the loss of data in transmitted video streams induces errors in reconstructing the video data at the client devices. It is thus preferable to avoid the problems of congestion during their transmission.
The problems of congestion arise in particular when the buffer memories of a router are full. However, at the start of a congestion period, there is a period during which no packet is lost and during which particular characteristics may be identified. To be precise, when a packet is transmitted during that period, it is stored for a certain time in the router instead of being routed practically directly. There is thus an increase in the overall time spent by a packet in the network between the server and a client. The identification of this particular period makes it possible to anticipate the loss of packets and thus to react in consequence.
One solution for detecting a start of congestion, before packet loss occurs, consists of measuring a period of time called RTT (acronym for Round Trip Time) corresponding to the time taken by a packet to travel there and back between a server and a client. An increase in the RTT indicates congestion or a start of congestion. The RTT may be measured by transmitting a first packet, containing the time at which it is transmitted, from a client to a server. On reception of that first packet, the server sends the client a second packet, containing the time at which that first packet was sent and the time elapsed between the reception of the first packet and the transmission of the second, from the server to the client. On reception of that second packet, the client compares the time at which the first packet was transmitted with that of the reception of the second packet, while taking into account the time elapsed between the reception of the first packet and the transmission of the second.
Although this solution provides a good estimation of the RTT, and thus of congestion or a start of congestion, it nevertheless has the following two major drawbacks:                the necessity to implement tools at the server end making it possible to receive and send the packets that are used to measure the RTT as well as to measure the time between the reception of the first packets and the sending of the second packets; and,        the lack of scalability (the solution becomes ineffective when the number of clients increases).        
Other solutions are based on the time taken by a packet to reach a client as from its sending by the server. However, although these solutions may enable a start of congestion to be efficiently detected, they require synchronization between servers and clients.
Conversely, there are solutions for detecting an increase in the bandwidth. For example, when a client does not detect any packet loss, it may subscribe to a subscription to another multicast session to receive supplementary data in order to enhance the quality of the video received. This procedure may be repeated until the optimum bandwidth is identified, that is to say until the loss of packets is identified. However, such a solution necessarily leads to congestion to attain the optimum bandwidth.
Another solution consists of enabling the server to increase the transmission rate of the data and to measure the time needed to receive an acknowledgement of receipt linked to the reception of each packet by the client. When this time increases, the server stops increasing the transmission rate (it has reached the rate causing congestion). However, this solution requires specific tools at the server end to increase the transmission rate and measure the time linked to the reception of acknowledgements of receipt as well as the cooperation of the client who must sent acknowledgements of receipt for each packet received.
Consequently, there is a need to improve the transmission of scalable data streams across a communication network, between a server and a client, according to the available bandwidth.